package frpc.boot.manager;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 类描述:  缓存描述管理接口
 *
 * @author 王雷
 * @version 1.0.0
 * @date 2022/8/16 0016 下午 8:07
 */
public interface ICacheDescriptionManager {

    Map<String, String> CACHE_CONTAINER = new HashMap<>();

    /**
     * 功能描述：获取所有描述Key
     *
     * @date : 2022/8/17 0017 上午 9:32
     */
    Set<String> giveCacheKeyToSet() throws Exception;

    /**
     * 功能描述：获取所有描述Key
     *
     * @date : 2022/8/17 0017 上午 9:32
     */
    List<String> giveCacheKeyToList() throws Exception;

    /**
     * 功能描述：是否存在
     * <br />
     * true：存在；false：不存在
     *
     * @param key 标识
     *
     * @date : 2022/8/17 0017 上午 9:32
     */
    boolean doesItExist(String key) throws Exception;

    /**
     * 功能描述：获取缓存服务标识
     *
     * @date : 2022/8/16 0016 下午 8:25
     */
    String giveCacheMark() throws Exception;

    /**
     * 功能描述：清空缓存描述
     *
     * @date : 2022/8/16 0016 下午 9:37
     */
    void clearCacheDescription() throws Exception;

    /**
     * 功能描述：获取配置的缓存名称
     *
     * @param key 缓存标识
     * @date : 2022/8/16 0016 下午 8:09
     */
    String keyComparison(String key) throws Exception;

    /**
     * 功能描述：添加缓存描述
     *
     * @param redisKey     缓存Key名称
     * @param redisMessage 缓存说明
     * @date : 2022/8/16 0016 下午 8:13
     */
    void saveOrUpdateCacheDescribe(String redisKey, String redisMessage) throws Exception;

    /**
     * 功能描述：删除缓存描述
     *
     * @param redisKey 缓存Key名称
     * @date : 2022/8/16 0016 下午 8:13
     */
    void removeCacheDescribe(String redisKey) throws Exception;
}
